################################################################################
#
# Copyright (c) 2014 Baidu.com, Inc. All Rights Reserved
#
################################################################################
"""
该模块用于读取url种子文件。

Authors: caopeirui(caopeirui@baidu.com)
Date:	2018/04/19 20:10:41
"""
import os
import logging
import itertools
import log

log.init_log("./log/seedfile_losd")

def get_url_list(url_list_file):
    """读取url_list_file路径里面的种子文件，返回需要抓取的原始url列表。

    Args:
        url_list_file: 种子文件路径。

    Returns:
        需要抓取的url列表。
        example:
        
    Raises:
        IOError: 种子文件有问题就抛出异常，因为没法继续抓取了。
    """
    try:
        seed_file = os.listdir(url_list_file)
        seed_file = [url_list_file + '/' + it for it in seed_file]    # 补全路径
    except Exception as e:
        logging.error('种子文件路径不存在：%s' % e)
        raise IOError('种子文件路径不存在，没法继续抓取，请确认！')
    else:
        url_list = []    # 存储结果
        for _ in seed_file:
            try:
                with open(_, 'r') as f:
                    url_list.append(f.read().splitlines())            
            except Exception as e:
                logging.error('读取种子文件问题：%s' % e)
                raise IOError('读取种子文件有问题，没法继续抓取，请确认！')

        url_list = list(itertools.chain.from_iterable(url_list))    # 二维list变一维list
        url_list = [it.strip() for it in url_list]
        url_list = set(url_list)    # 初步去重
        return url_list

if __name__ == "__main__":
    print(get_url_list('./urls'))
    